package gui.standard.form;

import java.sql.SQLException;

import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import model.tablemodel.PopisnaKomisijaTableModel;
import net.miginfocom.swing.MigLayout;
import util.components.JDigitsTextField;

public class PopisnaKomisijaForm extends StandardForm {

	private static final long serialVersionUID = 1L;
	private JDigitsTextField tfIdKomisije;
	private JTextField tfDatumFormiranjeKomisije;

	public PopisnaKomisijaForm() {

	}
	
	@Override
	public void init(){
		
		super.init();
		
		tfIdKomisije = new JDigitsTextField(7, 7, true, true);
		tfDatumFormiranjeKomisije = new JTextField(12);
		
		setTitle("Popisna komisija");
		
		tableModel = new PopisnaKomisijaTableModel(
				new String[] { "ID komisije", "Datum formiranja komisije" }, 0);
		
		tblGrid.setModel(tableModel);
		
		children.add(new ClanPopisneKomisijeForm());
		children.add(new PopisniDokumentForm());
		
		JPanel bottomPanel = new JPanel();
		bottomPanel.setLayout(new MigLayout("fillx"));
		JPanel dataPanel = new JPanel();
		dataPanel.setLayout(new MigLayout("gapx 15px"));

		JLabel lblIdKomisije = new JLabel("ID komisije:");
		JLabel lblDatumFormiranjaKomisije = new JLabel(
				"Datum formiranja komisije:");

		dataPanel.add(lblIdKomisije);
		dataPanel.add(tfIdKomisije, "wrap");
		dataPanel.add(lblDatumFormiranjaKomisije);
		dataPanel.add(tfDatumFormiranjeKomisije, "pushx");
		bottomPanel.add(dataPanel);

		bottomPanel.add(buttonsPanel, "dock east");

		add(bottomPanel, "grow, wrap");
	}

	@Override
	public void sync() {
		// TODO Auto-generated method stub
		int index = tblGrid.getSelectedRow();
		if (index < 0) {
			tfIdKomisije.setText("");
			tfDatumFormiranjeKomisije.setText("");

			return;
		}
		String idKomisije = (String) tableModel.getValueAt(index, 0);
		String datumFormiranjaKomisije = (String) tableModel.getValueAt(index,
				1);

		tfIdKomisije.setText(idKomisije);
		tfDatumFormiranjeKomisije.setText(datumFormiranjaKomisije);

		setMode(StandardForm.MODE_EDIT);

	}

	@Override
	public void addRow() {
		// TODO Auto-generated method stub
		String idKomisije = tfIdKomisije.getText().trim();
		String datumFormiranjaKomisije = tfDatumFormiranjeKomisije.getText()
				.trim();
		try {
			int index = tableModel.insertRow(new String[] { idKomisije,
					datumFormiranjaKomisije });
			tblGrid.setRowSelectionInterval(index, index);
			setMode(MODE_ADD);
		} catch (SQLException ex) {
			JOptionPane.showMessageDialog(this, ex.getMessage(), "Greska",
					JOptionPane.ERROR_MESSAGE);
		}

	}

	@Override
	public void searchRow() {
		// TODO Auto-generated method stub
		String idKomisije = tfIdKomisije.getText().trim();
		String datumFormiranjaKomisije = tfDatumFormiranjeKomisije.getText()
				.trim();
		try {
			tableModel.searchRows(new String[] { idKomisije,
					datumFormiranjaKomisije });
		} catch (SQLException ex) {
			JOptionPane.showMessageDialog(this, ex.getMessage(), "Greska",
					JOptionPane.ERROR_MESSAGE);
		}
	}

	@Override
	public void editRow() {
		// TODO Auto-generated method stub
		String idKomisije = tfIdKomisije.getText().trim();
		String datumFormiranjaKomisije = tfDatumFormiranjeKomisije.getText()
				.trim();
		try {
			int index = tableModel.editRow(new String[] { idKomisije,
					datumFormiranjaKomisije }, tblGrid.getSelectedRow());
			tblGrid.setRowSelectionInterval(index, index);
		} catch (SQLException ex) {
			JOptionPane.showMessageDialog(this, ex.getMessage(), "Greska",
					JOptionPane.ERROR_MESSAGE);
		}
	}

	@Override
	public void setMode(int mode) {
		super.setMode(mode);

		if (mode != StandardForm.MODE_ADD)
			return;

		tfIdKomisije.setText("");
		tfDatumFormiranjeKomisije.setText("");
	}

	@Override
	public String[] getSelectedRowKeys() {
		// TODO Auto-generated method stub
		return new String[]{tfIdKomisije.getText().trim()};
	}

	@Override
	public void getZoomedCol(String[] keys, StandardForm form) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public String[] getSelectedRowNextKeys(int index) {
		// TODO Auto-generated method stub
		String[] retval = new String[]{};
		switch(index){
			case 0: {
				retval =  new String[]{tfIdKomisije.getText().trim(), "", "", "", "", "", ""};
				break;
			}
			case 1: {
				retval =  new String[]{tfIdKomisije.getText().trim(), "", "", "", "", "", "", ""};
				break;
			}
		}
		
		return retval;
	}

}
